var http = require('http')
var fs = require('fs')
// const { mainModule } = require('process')
var template = require('art-template')
var url = require('url')

var comments = [
    {
        name: '张三',
        message: 'sjkldfl',
        dateTime: '2021/10/12'
    },
    {
        name: '张三2',
        message: 'alsfjla',
        dateTime: '2021/12/11'
    }
]

http
    .createServer(function (req, res) {
        //url.parse将路径解析为一个方便操作的对象，第二个参数为true
        var parseObj = url.parse(req.url, true)
        
        //单独获取不包含查询字符串的路径部分（该路径不包含？之后）
        var pathname = parseObj.pathname

        if (pathname === '/') {
            fs.readFile('./views/index.html', function (err, data) {
                if (err) {
                    return res.end('404 Not Found')
                }
                var htmlStr = template.render(data.toString(), {
                    comments: comments
                })
                res.end(htmlStr)
            })
        } else if (pathname === '/post') {
            fs.readFile('./views/post.html', function (err, data) {
                if (err) {
                    return res.end('404 Not Found')
                }
                res.end(data)
            })

        }else if (pathname.indexOf('/public/') === 0) {
            //统一处理
            //如果请求路径是以/public/开头，则认为你是要获取public中的某个资源
            //所以我们就直接可以把请求路径当做文件路径来直接进行读取
            // /public/css/main.css
            // /public/js/main.js
            // /public/lib/jQuery.js
            fs.readFile('.' + pathname, function (err, data) {
                if (err) {
                    return res.end('404 Not Found')
                }
                res.end(data)
            })
        } else if (pathname === '/pinglun') {
            //一次请求对应一次响应，响应结束这次请求也就结束了
            // res.end(JSON.stringify(parseObj.query))

            //接下来要做：
            // 1、获取表单提交的数据parseObj.query
            // 2、将当前时间日期添加到数据对象中，然后存储到数组中
            // 3、让用户重定向跳转到首页
            //    当用户重新请求/的时候，数组中的数据已经发生变化了
            
            var comment = parseObj.query
            comment.dateTime = '2021-10-19 22:11:00'
            comments.push(comment)
            //服务端这时候已经将数据存储好，接下来让用户重新请求/首页

            //如何通过服务器让客户端重定向？
            //1.状态码设置为302临时重定向 statusCode
            //2.在响应头中通过location告诉客户端往哪重定向setHeader
            res.statusCode = 302
            res.setHeader('Location', '/')
            res.end()
        }else {
            //其它都处理成404页面
            fs.readFile('./views/404.html', function(err, data) {
                if(err) {
                    return res.end('404 Not Found')
                }
                res.end(data)
            })
        }

    })

    .listen(3000, function () {
        console.log('server is running...')
    })